#pragma once

#include <src/test/math/Operators/Operators_test.h>

	void Operators_test() {
		std::cout << std::endl << " ---------------------------------------------------" << std::endl;
		std::cout << std::endl << " --------Starting Operator_examples-------" << std::endl;

		typedef Mod_Vector<double>					mod_array_type_1;
		typedef Dirichlet_Vector<double>			dirichlet_array_type_1;
		typedef OS_Vector<double>					protected_array_type_1;
		typedef Unbounded_Vector<double>			unbounded_array_type_1;
		typedef OS_Vector<unbounded_array_type_1>	protected_array_type_2;
		typedef particle<OS_double> p_array_1;
		typedef particles_list<p_array_1> p_array_2;

		check_operator< Delta<mod_array_type_1,1>, Delta<PeriodicParticle,1> >();
		check_operator< Delta<dirichlet_array_type_1,1>, Delta<DirichletParticle,1> >();

		check_operator< D__x<mod_array_type_1>, D__x<PeriodicParticle> >();
		check_operator< D__x<dirichlet_array_type_1>, D__x<DirichletParticle> >();

		check_operator< Delta_p<unbounded_array_type_1>, Delta_p<particle<OS_double>> >();
		check_operator< Delta_p<protected_array_type_2>, Delta_p<p_array_2> >();


		check_operator< D_x<mod_array_type_1>, D_x<PeriodicParticle> >();
		check_operator< D_x<dirichlet_array_type_1>, D_x<DirichletParticle> >();

		check_operator< u_2_Delta<mod_array_type_1>, u_2_Delta<PeriodicParticle> >();
		check_operator< u_2_Delta<dirichlet_array_type_1>, u_2_Delta<DirichletParticle> >();


		std::cout << std::endl << " -------End Operator_examples-----" << std::endl;
		std::cout << std::endl << " ---------------------------------------------------" << std::endl;
	};
